#pragma once

#include <iostream>
#include <fstream>
#include <chrono>
#include <ctime>
#include <iomanip>
#include <sys/stat.h>
#include <unistd.h>
#include <sstream>

class FileHandler
{
public:
    static std::string format_time(const struct timespec& ts) {
        // 将时间戳转为时间
        std::time_t time_seconds = ts.tv_sec;
        std::tm* time_info = std::localtime(&time_seconds);

        // 使用stringstream格式化时间
        std::ostringstream oss;
        oss << std::put_time(time_info, "%Y%m%d_%H%M%S") << "." 
            << std::setw(3) << std::setfill('0') << ts.tv_nsec / 1000000; // 毫秒

        return oss.str();
    }

    static std::string get_creation_time(const std::string& filename) {
        struct stat statbuf;
        
        // 获取文件的状态
        if (stat(filename.c_str(), &statbuf) != 0) {
            return "";
        }

        // 使用stat结果获取创建时间（Linux内核4.8+支持）
        struct timespec creation_time = statbuf.st_ctim;

        // 格式化并返回创建时间
        return format_time(creation_time);
    }
};
